<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 日期对象  => 用于处理日期和时间 记录着从1970-1-1 00:00:00 (+08:00) 开始到当前时间毫秒数

    // GMT / UTC  世界时,格林尼治时间
    // 北京时间(东八区)
    // 

    // 如何创建日期对象? 
    // 通过构造函数Date创建  => 1. 获取当前时间    2. 设置指定时间

    // 获取当前时间(没有参数)
    // var date = new Date();
    // console.log(date);
    // console.log(typeof date);

    // 设置日期和时间(传入参数)
    // (1)  单参数传参 => 传入日期格式的字符串  如:"2023-10-1 00:00:00"
    // 优点: 日期对象的结果和传入的参数保持一致
    // 缺点: 当月份 日期 时分秒 参数超出最大值 => 无效日期
    // var date = new Date("2023-10-1 12:12:12");
    // console.log(date);

    // var date = new Date("2023-10-31 25:12:12");  // Invalid Date 无效的日期
    // console.log(date);

    // (2) 多参数传参 => 分别传入年月日 时分秒 毫秒
    // 注意: 月份的参数0-11 (0:一月  11: 12月)
    // 技巧: 月份的参数 = 期望的月份 - 1

    // 优点: 超出临界值,自动换算 (大于最大值 => 进一位 , 小于最小值 => 借一位)
    // 缺点: 月份的参数 = 期望的月份 - 1

    // var date = new Date(2023,9,1,12,12,12); // 2023-10-1
    // console.log(date);

    // // 超出(大于最大值) => 进一位
    // var date = new Date(2023,9,32,12,12,12); // 2023-10-32  => 2023-11-1
    // console.log(date);
    
    // // 超出(小于最小值) => 进一位
    // var date = new Date(2023,9,0,12,12,12); // 2023-10-0  => 2023-9-30
    // console.log(date);

    // (3) 单参数传参 => 纯数字(毫秒数),自1970以来的毫秒数 
    // var date = new Date(0);
    // console.log(date);

    // var date = new Date(1000000000000);  // 1970年以后
    // console.log(date);

    // var date = new Date(-1000000000000);  // 1970年以前
    // console.log(date);

    // (4) 单参数传参 => 传入一个日期对象(日期对象深复制  => 日期对象中存在修改日期/时间的方法 => 影响原日期对象, 如果不期望影响原日期对象,先拷贝新的)

    var date = new Date(2023,9,1,12,12,12);
    console.log(date);
    
    var date1 = new Date(date);  // new Date() 接受日期对象
    console.log(date1);
    console.log(date === date1);



</script>
</html>